import pygame
from plane_sprites import *


# 游戏初始化


pygame.init()
# 创建游戏窗口 480*700
screen = pygame.display.set_mode((480,700))

# 绘制背景图像
bg = pygame.image.load("python演练（飞机大战）"
"/images/background.png")  # 加载图像数据
screen.blit(bg,(0,0))  # blit绘制图像
# pygame.display.update()  # update更新屏幕显示

# 绘制英雄的飞机
hero = pygame.image.load("python演练（飞机大战）/images/me1.png")
screen.blit(hero,(150,500))

# 可以在所有绘制工作完成之后，统一调用update方法
pygame.display.update()


# 创建时钟对象，可以指定循环体内部的代码执行的频率
clock = pygame.time.Clock()  

# 游戏循环，保证窗口不会自动退出 -> 意味着游戏的开始


# 定义飞机初始位置
hero_rect = pygame.Rect(150,500,120,125)

# 创建敌机的精灵
enemy = GameSprite("python演练（飞机大战）/images/enemy1.png")
enemy1 = GameSprite("python演练（飞机大战）/images/enemy1.png",2)

# 创建敌机的精灵组
enemy_group = pygame.sprite.Group(enemy,enemy1)

while True:

    clock.tick(60)

    # 监听退出事件
    for event in pygame.event.get():
        # 判断事件类型是否退出事件
        if event.type == pygame.QUIT:
            print("退出游戏")
            # quit卸载所有模块
            pygame.quit()
            # exit()直接终止当前正在执行的程序
            exit()
    
    # 修改飞机位置
    hero_rect.y -= 5
    # 判断飞机的位置 
    if hero_rect.y <= -hero_rect.height:
        hero_rect.y = 700

    # 调用blit方法绘制图像
    screen.blit(bg,(0,0))
    screen.blit(hero,hero_rect)

    # 让精灵组调用两个方法:update draw
    # update - 让组中的所有精灵更新位置
    enemy_group.update()
    # draw - 在scree上绘制所有的精灵
    enemy_group.draw(screen)

    # 调用update方法更新显示
    pygame.display.update()

pygame.quit()
